Locale Management একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যখন আপনি একটি মাল্টি-ল্যাংগুয়েজ বা আন্তর্জাতিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে চান। Locale সাধারণত ভাষা এবং অঞ্চল বোঝায়, যেমন ইংরেজি (en) বা বাংলা (bn), যা বিভিন্ন দেশের বা অঞ্চলের ভাষা এবং সংস্কৃতির জন্য উপযুক্ত।
Apache Tapestry তে Locale Management এর মাধ্যমে আপনি অ্যাপ্লিকেশনের বিভিন্ন ভাষার মধ্যে স্যুইচ করতে পারেন এবং ইউজারের নির্বাচিত ভাষায় কনটেন্ট প্রদর্শন করতে পারেন।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Tapestry তে পেজ এবং কম্পোনেন্টে Locale ম্যানেজ করা যায়।
Tapestry তে Locale ম্যানেজমেন্টের জন্য আপনাকে প্রথমে messages.properties
ফাইলগুলি তৈরি করতে হবে এবং সেগুলোর মধ্যে ভাষার অনুবাদ এবং কনটেন্ট ম্যানেজ করতে হবে।
ধরা যাক, আপনি ইংরেজি এবং বাংলার জন্য অনুবাদ চাইছেন।
messages.properties
(default locale - English):# messages.properties (English - default locale)
welcome.message=Welcome to our website!
login.button=Login
messages_bn.properties
(Bangla locale):# messages_bn.properties (Bangla locale)
welcome.message=আমাদের ওয়েবসাইটে স্বাগতম!
login.button=লগইন
এখানে:
messages.properties
হল ডিফল্ট ইংরেজি ভাষার ফাইল।messages_bn.properties
হল বাংলা ভাষার জন্য ফাইল।Tapestry তে Locale পরিবর্তন করার জন্য এবং ভাষা অনুযায়ী কনটেন্ট প্রদর্শন করার জন্য @Inject
অ্যানোটেশন এবং @Property
ব্যবহার করা যায়। Tapestry আপনাকে @Persist
অ্যানোটেশনও প্রদান করে, যার মাধ্যমে আপনি ইউজারের নির্বাচিত Locale সেট রাখতে পারবেন।
package com.example.pages;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.services.Messages;
public class UserPreferences {
@Persist
@Property
private String selectedLanguage = "en"; // Default language is English
@Inject
private Messages messages; // Inject the Messages service for localization
// Method to switch language
public void changeLanguage(String languageCode) {
selectedLanguage = languageCode;
}
// Displaying message based on the selected language
public String getWelcomeMessage() {
return messages.get("welcome.message"); // This will automatically pick the language based on locale
}
public String getLoginButtonText() {
return messages.get("login.button"); // This will display Login button text in selected language
}
}
এখানে:
selectedLanguage
প্রপার্টি ইউজারের নির্বাচিত ভাষা রাখে (ডিফল্ট: ইংরেজি)।changeLanguage()
মেথডের মাধ্যমে ইউজার যে ভাষা নির্বাচন করবে, তা selectedLanguage
তে সেট করা হবে।messages.get()
ব্যবহার করা হয়, যাতে প্রতিটি পেজে কনটেন্ট সঠিক ভাষায় প্রদর্শিত হয়।Locale পরিবর্তন করার জন্য, আপনাকে একটি পেজে select
ড্রপডাউন বা button
ব্যবহার করতে হবে, যেখানে ইউজার নির্ধারণ করতে পারবে যে কোন ভাষায় অ্যাপ্লিকেশনটি প্রদর্শিত হবে।
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Language Selector</title>
</head>
<body>
<h2>${welcomeMessage}</h2>
<button t:id="loginButton">${loginButtonText}</button>
<form t:id="languageForm">
<select t:id="languageSelector" t:value="selectedLanguage">
<option value="en">English</option>
<option value="bn">বাংলা</option>
</select>
<button type="submit">Change Language</button>
</form>
</body>
</html>
এখানে:
<select>
ড্রপডাউন ব্যবহার করে ইউজার ভাষা নির্বাচন করতে পারে।t:value="selectedLanguage"
এইভাবে selectedLanguage
প্রপার্টি বাংলা বা ইংরেজি সেট করবে।Tapestry আপনাকে LocaleSwitcher ফিচার সরবরাহ করে, যা ইউজারের ব্রাউজার বা সেশন থেকে ভাষা সিলেক্ট করতে সহায়ক। আপনি যদি সার্ভারের সেশন বা ইউজারের ব্রাউজারের ভাষার উপর ভিত্তি করে Locale স্যুইচ করতে চান, তবে আপনাকে এটি LocaleSwitcher মাধ্যমে করতে হবে।
package com.example.services;
import org.apache.tapestry5.services.ApplicationGlobals;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.Response;
public class LocaleSwitcherService {
private final ApplicationGlobals applicationGlobals;
private final Request request;
private final Response response;
public LocaleSwitcherService(ApplicationGlobals applicationGlobals, Request request, Response response) {
this.applicationGlobals = applicationGlobals;
this.request = request;
this.response = response;
}
// Method to switch locale
public void switchLocale(String language) {
response.setLocale(new java.util.Locale(language));
applicationGlobals.getLocale();
}
}
এখানে, LocaleSwitcherService কাস্টম সার্ভিস দ্বারা locale পরিবর্তন করা হচ্ছে।
Tapestry তে Locale Management এর মাধ্যমে আপনি বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করতে পারেন এবং ইউজারকে নির্দিষ্ট ভাষায় স্যুইচ করার সুযোগ দিতে পারেন।
messages.properties
ফাইল ব্যবহার করতে হয়।@Persist
এবং Messages সার্ভিস ব্যবহার করা হয়।এভাবে, Tapestry তে আন্তর্জাতিককরণ বা মাল্টি-ল্যাংগুয়েজ সাপোর্ট সরবরাহ করা যায়, যাতে আপনার অ্যাপ্লিকেশনটি একাধিক ভাষায় ব্যবহারযোগ্য হয়ে ওঠে।